const http = require('http')
const fs = require('fs')
const querystring = require('querystring')

let server = http.createServer()

server.listen(8001, () => {
    console.log('http://127.0.0.1:8001');
})

server.on('request', (req, res) => {
    // res.setHeader('Content-Type', 'text/html;charset=utf8')
    // res.setHeader('Content-Type', 'application/x-www-form-urlencoded')
    res.setHeader('Access-Control-Allow-Origin', '*')
    // res.setHeader('Access-Control-Allow-Headers', 'Content-Type')
    // 数据新增请求成功
    if (req.url === '/add' && req.method === 'POST') {
        
        let str = '', obj = {}
        req.on('data', (chunk) => {
            str += chunk
        })
        // 数据上传完成
        req.on('end', () => {
            console.log(666);
            // 将前端传来的参数转换为对象obj
            // 说明str包含=号就是，key=value&key=value的格式
            if (str.indexOf('=') != -1) {
                obj = querystring.parse(str)
            }
            // 说明str是一个json字符串
            else {
                obj = JSON.parse(str)
            }
            // 读取文件将对象添加到文件中
            fs.readFile('./db/data.json', 'utf-8', (err, data) => {
                if (err) {
                    res.end(JSON.stringify({
                        code: 1,
                        message: '数据新增失败'
                    }))
                }
                else {
                    // 将读取回来的data转换为对象
                    let arr = JSON.parse(data)
                    // 为前端传来的参数添加id
                    obj.id = arr.length > 0 ? arr[arr.length - 1].id + 1 : 1
                    arr.push(obj)
                    // 将新增好的arr在写入文件中   (写入需要转为字符串)
                    fs.writeFile('./data.json', JSON.stringify(arr), (err) => {
                        if (err) {
                            res.end(JSON.stringify({ stauts: 0, message: '添加失败' }))
                        } else {
                            res.end(JSON.stringify({ stauts: 1, message: '添加成功' }))
                        }
                    })
                }
            })
        })
    } else {
        res.end(JSON.stringify({
            code: 1,
            message: '数据新增失败'
        }))
    }
})
